System and Method for Recommending Media Programs and Notifying a User before Programs Start

ABSTRACT

A system and method for searching and/or subscribing to media programs and notifying the user before a recommended program starts in response to a user&#39;s request for recommendation. A server receives a user request for a media program event recommendation from a client device. The user request comprises user media program recommendation setting. The server generates a search query in accordance with the user request. The server runs the search query against one or more databases to generate a recommendation containing one or more media program events. At least one of the databases consists of scheduled media program events. The server sends automatically, without user interaction, to one or more user-designated calendar programs, a calendar event corresponding to a recommended media program event. The calendar event includes a respective date, time and duration.

TECHNICAL FIELD

The disclosed implementations relate generally to the field of searchenhancement and more particularly to searching, subscribing to mediaprogram events in response to a user's request for recommendation andnotifying the user before a recommended program event starts.

BACKGROUND

The variety and number of multimedia shows and programs available for awide range of audience and viewers have exploded in the past fewdecades. Nowadays, people can enjoy these media programs on differentplatforms (on TV, Internet-connected electronic devices) and indifferent venues (home, movie theaters, concert halls, just to name afew).

Not surprisingly, there are many program guides offered to people tohelp them select which program to watch. These program guides includethe traditional media program event guides such as a TV guide and movielistings as well as online schedules of programs and shows that becamecommon after the arrival of various online content streaming services inthe recent years. However, these program event guides are not tailoredfor each individual's interests. For example, a user can only viewprogram list for particular channels. Furthermore, these program guidesdo not remind a user of when programs of interest to the user will beplayed or performed.

SUMMARY

A number of implementations that overcome the limitations anddisadvantages described above are presented in more detail below. Theseimplementations provide methods and systems for searching and/orsubscribing to media programs of interest to a user and notifying theuser before a recommended program starts.

As described in more detail below, some implementations involve a methodperformed at a computer system, which includes one or more processorsfor executing programs and memory storing the one or more programs. Themethod includes receiving, from a client device, a user request for amedia program event recommendation. The user request comprises usermedia program recommendation setting. The method further includescreating a search query in accordance with the user request. The methodthen runs the search query against one or more databases to generate arecommendation containing one or more media program events. At least oneof the one or more databases consists of scheduled media program events.The method further includes sending automatically, without userinteraction, to one or more calendar programs designated by the user, acalendar event corresponding to a recommended media program event. Thecalendar event includes a respective date, time and duration. The methodcan be used for searching and/or subscribing to media programs andnotifying the user before a recommended program starts.

In some implementations, the above method further includes collectinguser web activity data associated with media program events prior toreceiving the user request and creating the search query in view of theuser web activity data as well as the user request.

In some implementations, the above method also includes adding to theone or more user-designated calendars one or more calendar eventscorresponding to the media program event recommendation.

In some implementations, the method further includes generating one ormore reminders for media program events corresponding to the mediaprogram recommendation. The modality of the one or more remindersincludes at least one of the following: email, text messaging, voicemail, calendar pop-up, push notification, IM chat message and post to asocial network.

In some implementations, a non-transitory computer readable storagemedium stores one or more programs for execution by one or moreprocessors of a server system, the one or more programs comprisinginstructions that, when executed by the one or more processors, causethe server system to perform the above described methods.

In some implementations, a server system for searching, subscribing tomedia programs and notifying the user before a recommended programstarts is disclosed. The server system have one or more processors andmemory storing programs for execution by the one or more processors andhaving access to one or more databases of media program events. Theserver system receives from a client device a user request for a mediaprogram event recommendation. The user request includes user mediaprogram recommendation setting. The server then creates a search queryin accordance with the user request. The search query is run against theone or more databases to generate one or more media program eventrecommendations. At least one of the one or more databases consists ofscheduled media program events. The server then sends automatically,without user interaction, to one or more user-designated calendarprograms a calendar event corresponding to a respective media programevent recommendation. The calendar event includes a respective date,time and duration.

Thus, computer systems and methods are disclosed that provide apersonalized media program recommendation and other additional enhancedfeatures for a user to better enjoy the rich media programs availabletoday.

BRIEF DESCRIPTION OF THE DRAWINGS

For a better understanding of the disclosed implementations as well asadditional aspects and implementations thereof, reference should be madeto the Description of Implementations below, in conjunction with thefollowing drawings in which like reference numerals refer tocorresponding parts throughout the figures.

FIG. 1 is a block diagram illustrating an exemplary computer networkthat includes a server system for searching and sending recommendedmedia program events to a user's designated calendar, in accordance withsome implementations.

FIG. 2A is a block diagram illustrating a server system in accordancewith some implementations.

FIG. 2B is a block diagram further illustrating the memory of a serversystem memory in accordance with some implementations.

FIG. 3 is a block diagram illustrating a client system in accordancewith some implementations.

FIG. 4 is a block diagram of an exemplary data structure used by a userweb activity database to store user web activity information inaccordance with some implementations.

FIG. 5 is a block diagram of an exemplary data structure used by a mediaprogram event data base to store information for a set of media programevents in accordance with some implementations.

FIGS. 6A-6E include flow charts illustrating a method of searching andsending recommended media program event to a user's designated calendarin accordance with some implementations.

FIG. 7 is a flow diagram illustrating the communication between a clientand a server system in accordance with some implementations.

DESCRIPTION OF IMPLEMENTATIONS

FIG. 1 is a block diagram illustrating an exemplary client-serverenvironment 100 according to some implementations. In FIG. 1, theclient-server environment 100 includes a server system 120, one or moreclient systems or devices (referred to hereinafter as client) 102. Oneor more communications networks 110 interconnect these components. Thecommunications network 110 may be any of a variety of networks,including local area networks (LAN), wide area networks (WAN), wirelessnetworks, wired networks, the Internet, or a combination of suchnetworks. In some implementations, a client 102 is located in a remotelocation with respect to the server system 120. In some otherimplementations, a client 102 is in close proximity to the server system120.

According to some implementations, a client 102 includes a clientapplication 104 and a user interface 106. The client application 104,when executed by the client 102, sends a request for media program eventrecommendation to the server system 120. In some implementations, theclient application 104 is selected from the set consisting of a searchapplication, a search engine plug-in for a browser application, and asearch engine extension for a browser application. In someimplementations, the user interface 106 includes a display device 108capable of displaying a media program and a user input device for userinput.

The client 102 sends media program recommendation requests 112 andinstructions to, and receives data (including media programrecommendation 114) from, the server system 120. The client 102 may beany computer or other electronic device that is capable of communicatingwith the server system 120. Examples of client 102 include, withoutlimitation, desktop and notebook computers, mainframe computers, servercomputers, mobile devices such as mobile phones, smart phones, andpersonal digital assistants, network terminals, and set-top boxes.

According to some implementations, the server system 120 includes asearch query generation module 122, a media program event database 124,a media program determination module 126, a user calendar communicationmodule 128. In some implementations, the server system 120 also includesuser web activity database(s) 130. In some implementations, the serversystem 120 does not include user web activity database 130 but haveaccess to user web activity database 130 located at and managed by otherservers.

The server system 120 receives program request 112 from one or moreclient 102 through the communication network 110. The search querygeneration module 122 takes the request 112 and generates acorresponding search query. In some implementations, the search query isgenerated in view of the related user behavior data stored in the userweb activity database 130. The media program determination module 126runs the search query generated by the search query generation module122 against the media program event database 124 and determines a listof media program to recommend to the user in response to the request112. The user calendar communication module 128 then formats the list ofrecommended programs determined by the media program determinationmodule 126 and sends the media program event recommendation 114 to arespective client 102 through the communication network 110.

As used herein, the term “media program event” refers to a scheduledmedia program with a play date in the future. Exemplary media programevents include, but are not limited to, TV shows, movies, performances(e.g., ballet, opera or concerts to be performed at local performancevenues), and online media streaming or live broadcasting, to be playedor performed during a certain time period in the future with specifictimes and dates.

As used herein, the terms “recommendation request” or “user request”refer to user request 112 for recommendation of media program events. Insome implementations, a user request 112 is a combination of one or moreof the following: time period, show title, show description, series id,cast, and genre. In some implementations, a user request may eveninclude some of the user preferences such as the number of programevents to recommend or programs played by certain actor.

FIG. 2 is a block diagram illustrating a server system 120 in accordancewith some implementations. The server system 120 typically includes oneor more processing units (CPU's) 202, one or more network interfaces204, a memory 206, and one or more communication buses 208 forinterconnecting these components and for connecting with other systems.A memory 206 includes high-speed random access memory, such as DRAM,SRAM, DDR RAM or other random access solid state memory devices; and mayinclude non-volatile memory, such as one or more magnetic disk storagedevices, optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. A memory 206 optionallyincludes one or more storage devices remotely located from the CPU(s)202. A memory 206, or alternately the non-volatile memory device(s)within memory 206, includes a non-transitory computer readable storagemedium. In some implementations, memory 206 or the computer readablestorage medium of memory 206 stores the following programs, modules anddata structures, or a subset thereof:

-   -   operating system 210 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   a network communication module (or instructions) 212 that is        used for connecting the server system 120 to other computers via        the one or more communication network interfaces 204 (wired or        wireless) and one or more communication networks 110 (FIG. 1),        such as the Internet, other wide area networks, local area        networks, metropolitan area networks, and so on;    -   server application modules 214 for performing the services        offered by the server system, including but not limited to:        -   a search query generation module 122 for determining a            search query 262 based at least in part on the user request            112.        -   a media program determination module 126 for using the            search query 262 generated by search query generation module            122 to identify a plurality of media program events in the            media program event databases 124. The media program            determination module 126 typically includes but is not            limited to the following modules:            -   a database access module 224 for accessing a media                program event database 124;            -   a preference determination module 226 for identifying a                weight score for each term in the search query 262 in                accordance with user media program preference setting                264;            -   a matching module 228 that runs the generated search                query 262 against the media program event information                database 124 and identifying a set of candidate media                program events 267 matching at least one term of the                search query 262;            -   a ranking module 230 for ranking the candidate program                events identified by matching module 228 according to                their weight scores;        -   a user calendar communication module 128 for communicating            with the calendar servers of the calendar accounts            designated by the user so that calendar events corresponding            to the recommended media program events will be properly set            up in the user-designated calendars;        -   a feedback reception module 232 for receiving feedback from            the user of a client 102 that is in addition to the            recommendation request 112, including but not limited to:            user recommendation preferences 260 regarding the            recommendation request 112, user calendar account            information 254. In some implementations, the user feedback            includes user instruction or response data 276 regarding            subscription or purchase of one or more of the recommended            media program events;        -   optionally, a purchase/subscription identification module            234 for identifying media programs that require subscription            or purchase from the media program recommendation list            determined by the ranking module 230;        -   a purchase/subscription module 236 for corresponding with            the servers of the media program that requires subscription            or purchase to subscribe or purchase the programs according            to the user's instruction;        -   other server application modules.    -   server data 240, holding data related to the server system 120,        including but not limited to:        -   user data 252, including but not limited to the following            categories of data:            -   user recommendation request 112;            -   data concerning user designated calendars 254 for user                calendar communication module 128;            -   user web activity data 256 retrieved from user web                activity database 130;            -   user preference settings 258, which may be used by                various modules, including but not limited to media                program determination module 126, user calendar                communication module 128, and purchase/subscription                identification module 234. Examples of user preference                settings 258 include but are not limited to the                following data categories:                -   user media program preference settings 260 (e.g.,                    horror movies) used by preference determination                    module 226;                -   recommendation preferences 262 such as the number of                    media program events to be recommended;                -   preferred reminder modality 264 such as pop up,                    email or SMS text messaging;                -   optionally, user response data 266 received by                    feedback reception module 232;                -   Search query 268 generated by search query                    determination module 122;            -   user specific media program term weight data 270;            -   media program events recommendation 114 to send to the                user of the client 102, including but not limited to the                following data:                -   Calendar events of media program event                    recommendation 272;                -   subscription or purchase information 274; and                -   media program reminder data 276;            -   matching media program events 278 associated with the                generated search query 262 determined by the matching                module 228;            -   optionally, locally stored media program event                information databases 124, including but not limited to                purchase or subscription data of certain media program                280;        -   other server data 282.

In some implementations, user media program preference settings 260include interest subscription of a user. The server system 120 collects,maintains and updates user interest subscriptions associated with mediaprogram events. The user can submit his or her program interests bytyping a keyword or selecting a genre. User interest subscription dataallow the server system 120 to perform more efficient search and torecommend more relevant programs to the user. For example, if the useris a big fan of “Lady Gaga”, then he can subscribe to an interestcategory called “Lady Gaga” for any Lady Gaga related programs orevents. As another example, a user may subscribe to an interest categorycalled “sci-fi movie.” As explained in more detail below, the serversystem 120 notifies the user of recommended programs when the serversystem 120 determines that there are upcoming programs that match theuser's interest subscription (as part of user media program preferencesettings).

In some implementations, the search query generation module 122 accessesa respective user's web activity database 130, which may be storedlocally or remotely, and determines the relevant user activities thatare related to the user recommendation request 112. In someimplementations, the search query generation module 122 identifiesadditional terms to include in the search query 262 to improve thesearch results. In some implementations, the search query generationmodule 122 conducts a search on the fly on the Internet (e.g., atcertain default websites) based on the terms contained in the userrequest 112 to identify additional terms and to add to the search query262.

In some implementations, when the media program event database 124 isremotely located, the database access module 224 is also responsible forcommunicating with the remote database server or manager over networksand retrieving the relevant data.

In some implementations, the user media program preference setting 264are derived from a combination of sources: the user preference settingalready stored on the server, current user preferences included in therecommendation request 112, or other user response data 276, or the userpreference setting determined based on data in the user web activitydatabase(s) 130.

In some implementations, the weight scores are calculated based on theweight value for search query terms determined by the preferencedetermination module 226 as discussed in more detail below. The rankingmodule 230 then sends a predetermined number of the top ranked programevents to user calendar communication module 128. The specific userpreference setting 256 typically includes the number of programs torecommend (e.g., top 5, top 10 etc.).

Each of the above-identified modules, applications or programscorresponds to a set of instructions, executable by the one or moreprocessors of server 120, for performing a function described above. Theabove identified modules, applications or programs (i.e., set ofinstructions) need not be implemented as separate software programs,procedures or modules, and thus various subsets of these modules may becombined or otherwise rearranged in various embodiments. In someimplementations, memory 206 optionally stores a subset of the modulesand data structures identified above. Furthermore, memory 206 may storesadditional modules and data structures not described above.

FIG. 3 depicts a block diagram illustrating a client system 102 inaccordance with some implementations. The client system 102 typicallyincludes one or more processing units (CPU's) 302, one or more networkinterfaces 304, memory 308, and one or more communication buses 306 forinterconnecting these components. The client system 102 includes a userinterface 106. The user interface 106 includes a display device 108 anda user input 109. The user interface 109 optionally includes an inputmeans such as a keyboard, mouse, a touch sensitive display, or otherinput buttons (not shown). Furthermore, some client systems use amicrophone and voice recognition to supplement or replace the keyboard.

Memory 308 includes high-speed random access memory, such as DRAM, SRAM,DDR RAM or other random access solid state memory devices; and mayinclude non-volatile memory, such as one or more magnetic disk storagedevices, optical disk storage devices, flash memory devices, or othernon-volatile solid state storage devices. A memory 308 optionallyincludes one or more storage devices remotely located from the CPU(s)302. The memory 308, or alternately the non-volatile memory device(s)within the memory 308, includes a non-transitory computer readablestorage medium. In some implementations, memory 308 or the computerreadable storage medium of memory 308 stores the following programs,modules and data structures, or a subset thereof:

-   -   an operating system 310 that includes procedures for handling        various basic system services and for performing hardware        dependent tasks;    -   a network communication module 312 that is used for connecting        the client system 102 to other computers via the one or more        communication network interfaces 304 (wired or wireless) and one        or more communication networks, such as the Internet, other wide        area networks, local area networks, metropolitan area networks,        and so on;    -   a display module 314 for enabling the information generated by        the operating system 310 and client applications 104 to be        presented visually on the display 108;    -   one or more client application modules 104 for handling various        aspects of interacting with the media program recommendation        server 120, including but not limited to: a browser application        316 for sending recommendation request to and receiving from the        media program recommendation server 120;    -   a client data module 318, for storing data relevant to the        clients, including but not limited to client media program        preference setting 320, client calendar account information 322,        client web activity data 324;

FIGS. 4 and 5 include a conceptual block diagram of a media programevent information database 130 for storing media program eventinformation and a user web activity database for storing user historyterms and web activities, respectively. In various implementations, theinformation in the database may be stored in multiple data structures,or even multiple computers, and need not be organized in the specificmanner shown in FIGS. 4 and 5.

Turning to FIG. 4, it depicts a block diagram of an exemplary datastructure for the media program event information database 130 forstoring media program event information 410 in accordance with someimplementations. The database data structure 130 includes a plurality ofmedia program profile records 410-1 to 410-N, each of which correspondsto a specific media program event. In some implementations, each mediaprogram profile record 410 contains media program metadata, includingmedia program ID 412 that identifies a particular media program event,the title of the program 414, the set of corresponding show times (a setof times, each time corresponding to one period during which the mediaprogram is played) 416, a rating list for classifying the media programevent 418, venue/platform information 420, a program descriptionoutlining the content of the media program 422, cast information 424,subscription/purchase information 426, genre information 428, and otherrelated terms 430 associated with the media program.

FIG. 5 depicts a block diagram of an exemplary data structure for theuser web activity database 130 for storing user history terms and webactivity (especially media program related ones) in accordance with someimplementations. As shown, the database data structure 130 includes aplurality of user web activity records 502-1 to 502-N, each of whichcorresponds to a user. In some implementations, each user web activityrecord 502 contains at least two categories of data entries: searchphrases 504 that the user has entered in a search window of a browser ora portal (e.g., web browser, YouTube, Google Search) and media programs506 (or the trailers of the media programs) that the user has previouslywatched.

In some implementations, a media program record 506 includes programtitle 512, Date and Time of the most recent viewing of the mediaprogram, total number of times 516 the user has viewed the trailer ofthat media program. In some implementations, media program 506 alsoincludes the number of times the user has searched for the program. (notshown). In some implementations, a media program 506 also includes aprogram description entry, a media type (e.g., TV or movie) or otherinformation (not shown) so that two different media programs having thesame title will in fact have two different media program 506 entries.

FIGS. 6A-6E are flow diagrams illustrating a method of searching andsending media program event recommendation to a user's designatedcalendar, in accordance with some implementations. Each of theoperations shown in FIGS. 6A-6E may correspond to instructions stored ina computer memory or computer readable storage medium. Optionaloperations are indicated by dashed lines (e.g., boxes with dashed-lineborders).

In some implementations, the server system 120 (FIG. 1) receives from aclient 102 a user's recommendation request 112 for media program events(602). Typically, the user request 112 includes some if not all of usermedia program preference setting 320. Examples of recommendation setting320 include, but are not limited to, number of program event torecommend, the maximum or minimum program time, and the expiration dateof the programs to be recommended. In some implementations, the serversystem 120 communicates with the client 102 to receive additionalinformation after receiving the user request 112, as discussed withrespect to step 616 and step 620 below.

In some implementations, the server system 120 collects web activitydata of a user associated with media program events prior to receivingthe request 112 (604). In some implementations, the server system 120maintains and updates web activity database 130 for a user by collectingdata reflecting a user's web activity concerning media programs duringits routine crawling of the Internet. For example, if a user searchesfor information relating to a particular TV sitcom series called“Seinfeld,” the server system 120 first determines whether a data entryalready exists for that user in the web activity database 130. If not,the server system 120 first creates an entry (see e.g. 502 in FIG. 5)for that user. If there is already a data structure existing for thatuser, the server system 120 simply adds an entry called phrase searched504 for the search phrase the user entered in the search window. Thephrase searched 504 further includes entries for metadata such as: aprogram title, media type and genre with the corresponding values“Seinfeld,” “TV” and “Sitcom.” In some implementations, the phrasesearched 504 also records the number of times the user has searched forthe same media program and other data relating to the user's webactivity.

In some implementations, the collected web activity data of a userincludes media programs (or a trailer of a show) the user has viewedbefore (256 in FIG. 2B, 506 in FIG. 5), which further includes bothinformation about a particular media program and the user's behaviorwith respect to that program, such as the title of the program 512, thetime of last viewing 514 and number of times the user has searched forinformation about the program 516. In the above example, if the usersubsequently viewed the pilot of “Seinfeld,” the server system 120 addsa Media Program Viewed entry 506 for the same user in the web activitydatabase 130 with the value of title of the program subentry 512 being“Seinfeld.”

In some implementations, the server system 120 has access to user webactivity databases that are created and managed by other servers. Insuch cases, after receiving the user request 112, the server system 120can retrieve relevant user web activity data 502 for the user byproviding the user identifying information contained in the user request112 to the servers of the databases.

After receiving the user request 112, the server system 120 next createsa search query 262 in accordance with the received user request 112(608). In some implementations, the created search query includes onlyterms extracted from the user request 112, after stripping off thenon-program-identifying information such as information identifying usercalendars. This is typically done through natural language processing.While conducting natural language processing on a corpus of a text togenerated a query, the server (120, FIG. 1) ignores uninteresting wordswhich appear frequently across all writings, such as “a” or “the.”Instead, the query server system (120, FIG. 1) focuses on more importantwords like words identifying people, places, and products, also known asinteresting entities. By restricting the search space to interestingentities, both the time needed to generate the individual query and thetime needed for data look up if the queries are stored in a database canbe reduced. For example, if the user request 112 is “Please recommendthree TV sitcom programs for the next 2 weeks for my Google Calendar,”then the search query contains terms “TV” and “sitcom.” As anotherexample, if the user request 112 is “five action movies by Bruce Willisfor this month and remind me in my Outlook calendar,” the search querywould contain terms “action,” “movie” and “Bruce Willis.”

In some implementations, the server system 120 creates the search queryin view of the user web activity data 256 as well as the user request112 (610) when the server system 120 has access to user web activitydata. Typically, the server system 120 first identifies one or moreterms relating to the user request 112 based on the user web activitydata for the respective user (612). The server system 120 then builds asearch query 262 that includes at least one of the terms identified bythe server system 120 from the respective user's web activity data thatare related to the received user request 112 and at least one term fromthe user request (614). Using the same user request for TV sitcomrecommendation example above, if one of the search phrase 504 for thatuser contains both “TV sitcom” and “Seinfeld,” although “Seinfeld” isnot present in the current user request 112, the server system 120 wouldadd “Seinfeld” as a term to the search query 262 being constructed.

In some implementations, while creating the search query, the serversystem 120 receives from the user information identifying therecommendation preferences of the user including number of media programevents to recommend and time window over which the recommended mediaprogram events are scheduled (616). In some other implementations,before starting creating the search query, the server system 120receives the information identifying the recommendation preferences as afollow up of receiving the user request 112 (not shown).

After a search query has been created, the server system 120 executesthe search query 262 against one or more media program databases 130 togenerate a program recommendation including one or more media programevents, and at least one of the databases consists of scheduled mediaprogram events (618, FIGS. 6A and 6B). As used herein, “scheduled mediaprogram events” refer to media programs that have show times scheduledin the future.

In some implementations, the media program databases 130 are licensedfrom third party providers. Typically, the data in the licensed orpurchased media program databases 130 contain program title, scheduledpresentation time(s), and venue/platform it plays, e.g., on TV, or inmovie theatres, or at subscription website. Usually, the purchasedprogram listing does not, however, provide all the important informationsuch as description of the program and actor's names that is necessaryfor making relevant recommendation to users. In such cases, the serversystem 120 supplements the missing information by crawling the Internetusing the matching title and other program information contained in thepurchased program listing.

In some implementations, the server system 120 ranks media programevents to generate the one or more media program event recommendationsin view of the web activity (624). There are many different rankingmethods that a server system 120 can employ. As a simple example, theserver system 120 ranks media program events based on the frequency of auser's YouTube viewing of different genres according to someimplementations. If the server system receives a user request 112 forrecommending movies available for the next two weeks and the user webactivity data shows that a user watches on the YouTube movie trailers ofcomedy most often, with action movies immediately follow, which in turnis followed by other genres, the server system 120 would first identifyall the movies available in the local theaters for the next two weeksand then rank these movies in the order of comedy, action and the restof the genres.

In some implementations, the server system 120 first identifies a set ofmedia program events in the one or more databases of scheduled mediaprogram events by selecting media program events that match at least aportion of the search query 262 (626). For example, if the term “comedy”in the user request 112 is found in an entry of program 410-1 in themedia program event database 130 and program 410-1 has a show time 416in the future, program 410-1 is added to the identified set.

The server system 120 then ranks the set of identified media programevents according to a media program preference setting (628). The mediaprogram preference setting is a set of parameters for all or a subset ofthe following categories: type of media, genre, title, author, cast,recency of a media program, frequency of a media program, and MPAAprogram ratings such as Motion Picture Association of America ratings(630). Some examples of the type of media are TV programs, movies playedin the theatre, Internet streaming or live concert. As used herein, theterm “recency of a media program” refers to the relative timinginformation such as the last time when the user viewed or searched aboutthat media program, and is a good indicator of the user's interest inviewing that program.

In some implementations, each parameter in the preference setting has aset of values for a particular user. For each program in the identifiedset, the server system 120 calculates the total score based on the valueof each parameter in the preference setting. The server system 112 thenranks all the candidate programs identified in step 626 based on thescores, the higher the score the more relevant the program is inresponse to the user's request. For example, a preference setting hasthree parameters with the following predetermined values: the genre hasfive possible values (5 for comedy, 4 for action movies or TVs, 3 formusical performances, 2 for sports events, and 1 for the rest of programgenres); the type of media has five possible values (4 for programs viaInternet streaming, 3 for movies in the theatres, 2 for TV programs, 1for performance halls, 0 for the rest); and the frequency parametersimply takes as the value the number of times the user searched for orwatched a particular program. Accordingly, a comedy movie in theidentified set that is available for purchase on the Internet and thatthe user has previously searched on Internet for 5 times would have ascore of 14; whereas, an action movie in the identified set that isavailable on TV and the user has never searched on Internet before has atotal score of 6. Thus, the comedy movie with a score of 14 ranks higherthan the action TV with a score of 6.

In some implementations, some of the parameters in the media programpreference setting are not user specific. These generic preferenceparameters are typically predetermined based on live side-by-sideexperiments. For example, to fine tune the value of a particularparameter, two groups of users are selected. Each group is presented toone of the two different sets of program recommendation. Each set ofrecommendation results is based on a different value of the parameterbeing tuned while holding the rest of the parameters the same. Theparameter value corresponding to the more received recommendation set iskept. This fine tuning of a preference parameter value usually takesmany rounds of experiments.

Having ranked the media program event set with each media programmatching at least a portion of the search query, the server system thengenerates one or more media program recommendations from the identifiedmedia program event set in accordance with the rankings of the mediaprogram events (632). For example, if the user has requested torecommend five program events in the user request 112, the server system120 generates a recommendation consisting of the top five media programevents.

Returning to FIG. 6A, in some implementations, the server system 120receives from the user as part of the user request 112 informationidentifying the user including user account information for the one ormore user-designated calendar programs. In some other implementations,the server system 120 receives from the user information identifying theuser including user account information for the one or moreuser-designated calendar programs after the server system 112 hascompleted executing the search query against the databases (620).

In some implementations, the server system 120 next sends automatically,without user interaction, to one or more user-designated calendarprograms a calendar event corresponding to the media program eventrecommendation generated in step 618 above. Each calendar event includesa respective date, time and duration of the respective media programevent (622). In some implementations, the server system 112 leaves it tothe calendar server of the user designated calendars to determine how topresent the recommended media program events on the designatedcalendars. In some implementations, the server system 120 directly addsto the one or more user-designated calendars identified in the userrequest one or more calendar events corresponding to the media programrecommendation (634) (FIG. 6C).

FIG. 6D depicts the flow of a server system 120 subscribing to orsetting up pay per view on behalf of the user for each media program inthe recommendation (636), according to some implementations. The serversystem 120 first identifies subscription or pay per view information ofa respective media program event in the recommendation based on theinformation in the media program event database(s) (638). In someimplementations, the server system searches for subscription or pay perview information in additional sources separate from the one or moredatabases to identify subscription or pay per view information (640),including for local (i.e., not just Internet) events. For example, thepay per view information for a recommended movie to be played in a localtheater coming Sunday includes the ticket price and the payment methodsavailable (e.g., online with a credit card number.) As another example,a recommended program can be viewed for certain time at a website thatrequires a membership. The subscription information then includes thesubscription website URL and whether membership fee is required.

Having obtained the subscription or pay per view information, the serversystem 120 next transmits that information to the user, via the clientdevice (642).

In some implementations, the server system 120 receives from the user apurchase request for the respective media program event recommendation(644). In response to the purchase request, the server system 120subscribes to or pays for a service offering the media program event ata scheduled time in accordance with the user purchase request (646).

FIG. 6E illustrates that the server system 120 generates one or morereminders for media program events corresponding to the media programrecommendation. In some implementations, the modality of the one or morereminders includes at least one form from the group consisting of:email, text messaging, voice mail, and calendar pop-up, pushnotification, IM chat message and post to social networks (648).

FIG. 7 illustrates the communication between a client 102 and a serversystem 120 according to some implementations. Typically, a client 102sends a user request 112 for media program event recommendation to aserver system 120 (702). In some implementations, the user request 112includes not only the type of media programs the user desires but alsothe recommendation preferences such as the number of programs, theduration of the programs and the user calendar accounts so the serversystem 120 can send recommended program events to. The server system 120receives the user recommendation request from the client device (704)and then creates a search query that is associated with the user request(706). The server system 120 next runs the created search query againstone or more media program event databases to generate a media programevent recommendation (708).

The server system 120 then sends events of recommendation to the userdesignated calendar programs (710). In some implementations, a client102 receives the recommendation in response to the user request 112directly from the server system 120 (712). In some otherimplementations, a client 102 receives the notification of therecommendation through the server of the user designated calendars (notshown).

In some implementations, the client 102 sends user feedback to theserver system 120 in response to the received recommendation (714). Forexample, the user does not like one of the recommended events and sendsthe server 120 a message conveying this. The server system 120 receivesuser response to the recommendation (716), and updates the user webactivity database 130 and user preference setting 258 accordingly.

In some implementations, one or more of the recommended program eventsrequire further user action. For example, a recommended program event isa movie that is going to be played in the theater starting on comingSunday. As another example, a recommended program event is a programthat can be viewed for certain time at a website that requires amembership. Having determined that a payment or a subscription isrequired, the server system 120 transmits additional information (e.g.,the ticket price, the web site where the ticket can be purchased using acredit card, or the subscription website URL) to the user via the client102 (718). The client device 102 receives the payment or subscriptionrelated information from the server system 120(720) and present it tothe user (not shown). The user then sends instruction via the client 102regarding whether to subscribe or purchase the recommended program(724). If the user instruction is affirmative, the server system 120subscribes to or pays for the recommended program on behalf of the user(722).

In some implementations, the server system 120 also adds reminders forrecommended media program events to the user's designated calendars inaddition to adding the events to the calendars (726). For example, theserver system 120 may communicate with the server of a user designatedcalendar to add an email reminder two days prior to the premier date ofa recommended movie or the date of a movie for which the server system120 has purchased a ticket for the user.

The foregoing description, for purpose of explanation, has beendescribed with reference to specific implementations. However, theillustrative discussions above are not intended to be exhaustive or tolimit the invention to the precise forms disclosed. Many modificationsand variations are possible in view of the above teachings. Theimplementations were chosen and described in order to best explain theprinciples of the invention and its practical applications, to therebyenable others skilled in the art to best utilize the invention andvarious implementations with various modifications as are suited to theparticular use contemplated.

The terminology used herein is for the purpose of describing particularimplementations only and is not intended to be limiting of the claims.As used in the description of the implementations and the appendedclaims, the singular forms “a”, “an” and “the” are intended to includethe plural forms as well, unless the context clearly indicatesotherwise. It will also be understood that the term “and/or” as usedherein refers to and encompasses any and all possible combinations ofone or more of the associated listed items. It will be furtherunderstood that the terms “comprises” and/or “comprising,” when used inthis specification, specify the presence of stated features, integers,steps, operations, elements, and/or components, but do not preclude thepresence or addition of one or more other features, integers, steps,operations, elements, components, and/or groups thereof.

As used herein, the term “if” may be construed to mean “when” or “upon”or “in response to determining” or “in accordance with a determination”or “in response to detecting,” that a stated condition precedent istrue, depending on the context. Similarly, the phrase “if it isdetermined [that a stated condition precedent is true]” or “if [a statedcondition precedent is true]” or “when [a stated condition precedent istrue]” may be construed to mean “upon determining” or “in response todetermining” or “in accordance with a determination” or “upon detecting”or “in response to detecting” that the stated condition precedent istrue, depending on the context.

Methods and systems for searching and/or subscribing to media programsand notifying the user before a recommended program starts are describedabove. Reference have been made in detail to certain implementations,examples of which are illustrated in the accompanying drawings. Whilethe invention has been described in conjunction with theimplementations, it will be understood that the implementations are notintended to limit the invention to these particular implementationsalone. It will be apparent to one of ordinary skill in the art that someimplementations may be practiced without these specific details. Inother instances, methods, procedures, components, and networks that arewell-known to those of ordinary skill in the art are not described indetail to avoid obscuring aspects of the implementations described inthis document.

What is claimed is:
 1. A computer implemented method, comprising: at aserver system having one or more processors and memory storing programsfor execution by the one or more processors: receiving, from a clientdevice, a user request for a media program event recommendation, whereinthe user request includes a user media program recommendation setting;creating a search query in accordance with the user request; executingthe search query against one or more databases to generate one or moremedia program event recommendations, wherein at least one of thedatabases consists of scheduled media program events; and sendingautomatically, without user interaction, to one or more user-designatedcalendar programs a calendar event corresponding to a respective mediaprogram event recommendation, wherein the calendar event includes arespective date, time and duration.
 2. The method of claim 1, furthercomprising: prior to receiving the user request, collecting web activitydata of a user associated with media program events, and creating thesearch query in view of the user web activity data as well as the userrequest.
 3. The method of claim 2, wherein the collected web activitydata of the user comprises information selected from the groupconsisting of: toolbar information for the user's previous searches andmedia program activity data of the user.
 4. The method of claim 2,wherein the executing the search query-further comprises ranking mediaprogram events in the one or more databases in view of the web activity.5. The method of claim 2, wherein creating a search query furthercomprises: identifying one or more terms based on the user web activitydata; building the search query that includes at least one of the termsbased on the user web activity data and at least a portion of the userrequest.
 6. The method of claim 5, wherein executing the search queryagainst the one or more databases further comprises: identifying a setof media program events in the one or more databases, wherein a mediaprogram event in the set matches at least a portion of the search query;ranking the media program events in the media program event set inaccordance with a media program preference setting; and generating oneor more media program recommendations from the media program event setin accordance with the rankings of the media program events.
 7. Themethod of claim 6, wherein the media program preference setting is a setof parameters for one or more factors selected from a group consists of:type of media, genre, title, author, actor, recency of a media program,frequency of a media program, and program ratings such as Motion PictureAssociation of America ratings.
 8. The method of claim 1, furthercomprising: identifying subscription or pay per view information of arespective media program event recommendation; and transmitting thesubscription or pay per view information to the user, via the clientdevice.
 9. The method of claim 8, wherein identifying subscription orpay per view information further comprises searching for subscription orpay per view information in additional sources separate from the one ormore databases.
 10. The method of claim 8, further comprising: receivingfrom the user a purchase request for the respective media program eventrecommendation; and in response to the purchase request, subscribing toor paying for a service offering the media program event at a scheduledtime in accordance with user instruction.
 11. The method of claim 1,further comprising adding to the one or more user-designated calendarsone or more calendar events corresponding to the media programrecommendation.
 12. The method of claim 1, further comprising generatingone or more reminders for media program events corresponding to themedia program recommendation, wherein the modality of the one or morereminders includes at least one of the group consisting of: email, textmessaging, voice mail, calendar pop-up, push notification, IM chatmessage and post to social networks.
 13. The method of claim 1, furthercomprising receiving from the user information identifying therecommendation preferences of the user including number of media programevents to recommend and time window over which the recommended mediaprogram events are scheduled.
 14. The method of claim 1, furthercomprising receiving from the user information identifying the userincluding user account information for the one or more user-designatedcalendar programs.
 15. A server system, comprising: one or moreprocessors; and memory storing one or more programs for execution by theone or more processors, the one or more programs comprising instructionsfor: receiving, from a client device, a user request for a media programevent recommendation, wherein the user request comprises user mediaprogram recommendation setting; creating a search query in accordancewith the user request; executing the search query against one or moredatabases to generate one or more media program event recommendations,wherein at least one of the one or more databases consists of scheduledmedia program events; and sending automatically, without userinteraction, to one or more user-designated calendar programs a calendarevent corresponding to a respective media program event recommendation,wherein the calendar event includes a respective date, time andduration.
 16. The system of claim 15, further comprising instructionsfor collecting web activity data of a user associated with the userrequest prior to receiving the user request, wherein the search query iscreated in view of the user web activity data as well as the userrequest.
 17. The system of claim 16, wherein the collected web activitydata of the user comprises information selected from the groupconsisting of: toolbar information for the user's previous searches andmedia program activity data of the user.
 18. The system of claim 16,wherein the instructions for executing the search query further compriseranking the one or more media program event recommendations in view ofthe web activity.
 19. The system of claim 16, wherein the instructionsfor creating a search query further comprise: identifying one or moreuser history terms based on the user web activity data; creating thesearch query that includes at least one of the user history terms and atleast a portion of the user request.
 20. The system of claim 15, furthercomprising instructions for: identifying subscription or pay per viewinformation of a respective media program event recommendation; andtransmitting the subscription or pay per view information to the user,via the client device.
 21. The system of claim 15, further comprisinginstructions for adding to the one or more user-designated calendars oneor more calendar events corresponding to the media programrecommendation.
 22. The system of claim 15, further comprisinginstructions for generating one or more reminders for media programevents corresponding to the media program recommendation, wherein themodality of the one or more reminders includes at least one of the groupconsisting of: email, text messaging, voice mail, calendar pop-up, pushnotification, IM chat message and post to social networks.
 23. Thesystem of claim 15, further comprising instructions for receiving fromthe user information identifying the recommendation preferences of theuser including number of media program events to recommend and timewindow over which the recommended media program events are scheduled.24. The system of claim 15, further comprising instructions forreceiving from the user information identifying the user including useraccount information for the one or more user-designated calendarprograms.
 25. A non-transitory computer readable storage medium storingone or more programs for execution by one or more processors of aserver, the one or more programs comprising instructions for: receiving,from a client device, a user request for a media program eventrecommendation, wherein the user request comprises user media programrecommendation setting; creating a search query in accordance with theuser request; executing the search query against one or more databasesto generate one or more media program event recommendations, wherein atleast one of the one or more databases consists of scheduled mediaprogram events; and sending automatically, without user interaction, toone or more user-designated calendar programs a calendar eventcorresponding to a respective media program event recommendation,wherein the calendar event includes a respective date, time andduration.
 26. The computer readable storage medium of claim 25, furthercomprising instructions for collecting web activity data of a userassociated with the user request prior to receiving the user request,wherein the search query is created in view of the user web activitydata as well as the user request.
 27. The computer readable storagemedium of claim 26, wherein the collected web activity data of the usercomprises information selected from the group consisting of: toolbarinformation for the user's previous searches and media program activitydata of the user.
 28. The computer readable storage medium of claim 26,wherein the instructions for executing the search query further compriseranking the one or more media program event recommendations in view ofthe web activity.
 29. The computer readable storage medium of claim 26,wherein the instructions for creating a search query further comprise:identifying one or more user history terms based on the user webactivity data; creating the search query that includes at least one ofthe user history terms and at least a portion of the user request. 30.The computer readable storage medium of claim 25, further comprisinginstructions for: identifying subscription or pay per view informationof a respective media program event recommendation; and transmitting thesubscription or pay per view information to the user, via the clientdevice.
 31. The computer readable storage medium of claim 25, furthercomprising instructions for adding to the one or more user-designatedcalendars one or more calendar events corresponding to the media programrecommendation.
 32. The computer readable storage medium of claim 25,further comprising instructions for generating one or more reminders formedia program events corresponding to the media program recommendation,wherein the modality of the one or more reminders includes at least oneof the group consisting of: email, text messaging, voice mail, calendarpop-up, push notification, IM chat message and post to social networks.33. The computer readable storage medium of claim 25, further comprisinginstructions for receiving from the user information identifying therecommendation preferences of the user including number of media programevents to recommend and time window over which the recommended mediaprogram events are scheduled.
 34. The computer readable storage mediumof claim 25, further comprising instructions for receiving from the userinformation identifying the user including user account information forthe one or more user-designated calendar programs.
 35. The method ofclaim 1, further comprising: prior to receiving the user request,receiving one or more interest subscriptions of a user; storing the oneor more interest subscriptions of the user; and creating the searchquery in view of the one or more interest subscriptions of the user.